package com.gitee.hongruisun.promotion.v2;

/**
 * 模板会有一个或者多个为实现的方法
 */
public abstract class NetworkCourseTemplate implements INetworkCourse{

    protected final void createCource(){
        //1、 发布预习资料
        this.postPreResource();
        // 2、 制作PPT课件
        this.createPPT();
        // 3、在线直播
        this.liveVideo();
        // 4、 提交课件、课堂笔记
        this.postNote();
        // 5、 布置作业，有些课没有作业，有些课是有作业的
        //如果有作业的话，检查作业。如果没有作业，完成了
        if(needHomeWork()){
            checkHomeWork();
        }
    }

    /**
     * 提交课件、课堂笔记
     */
    private void postNote(){
        System.out.println("提交课件、课堂笔记");
    }

    /**
     * 在线直播
     */
    private void liveVideo() {
        System.out.println("在线直播");
    }

    /**
     *  制作PPT课件
     */
    private void createPPT() {
        System.out.println("制作PPT课件");
    }

    /**
     * 发布预习资料
     */
    private void postPreResource() {
        System.out.println("发布预习资料");
    }

    /**
     * 布置作业
     */
    @Override
    public void checkHomeWork() {

    }

    /**
     *  钩子方法，实现流程的微调
     * @return
     */
    protected  boolean needHomeWork(){return false;}
}
